package com.sheng.leetcode.year2025.month09.day30;

import org.junit.Test;

/**
 * @author by ls
 * @date 2025/9/30
 * <p>
 * 2221. 数组的三角和<p>
 * <p>
 * 给你一个下标从 0 开始的整数数组 nums ，其中 nums[i] 是 0 到 9 之间（两者都包含）的一个数字。<p>
 * nums 的 三角和 是执行以下操作以后最后剩下元素的值：<p>
 * nums 初始包含 n 个元素。如果 n == 1 ，终止 操作。否则，创建 一个新的下标从 0 开始的长度为 n - 1 的整数数组 newNums 。<p>
 * 对于满足 0 <= i < n - 1 的下标 i ，newNums[i] 赋值 为 (nums[i] + nums[i+1]) % 10 ，% 表示取余运算。<p>
 * 将 newNums 替换 数组 nums 。<p>
 * 从步骤 1 开始 重复 整个过程。<p>
 * 请你返回 nums 的三角和。<p>
 * <p>
 * 示例 1：<p>
 * 输入：nums = [1,2,3,4,5]<p>
 * 输出：8<p>
 * 解释：<p>
 * 上图展示了得到数组三角和的过程。<p>
 * <p>
 * 示例 2：<p>
 * 输入：nums = [5]<p>
 * 输出：5<p>
 * 解释：<p>
 * 由于 nums 中只有一个元素，数组的三角和为这个元素自己。<p>
 * <p>
 * 提示：<p>
 * 1 <= nums.length <= 1000<p>
 * 0 <= nums[i] <= 9<p>
 */
public class LeetCode2221 {

    @Test
    public void test() {
        int[] nums = {1, 2, 3, 4, 5};
//        int[] nums = {5};
        System.out.println(new Solution().triangularSum(nums));
    }
}

class Solution {
    public int triangularSum(int[] nums) {
        // 需要循环的次数是 n - 1
        for (int n = nums.length - 1; n >= 0; n--) {
            for (int i = 0; i < n; i++) {
                nums[i] = (nums[i] + nums[i + 1]) % 10;
            }
        }
        return nums[0];
    }
}
// 1 + 2 + 3 + 4 + 5
// (1 + 2) + (2 + 3) + (3 + 4) + (4 + 5)
// (1 + 2 + 2 + 3) + (2 + 3 + 3 + 4) + (3 + 4 + 4 + 5)
// (1 + 2 + 2 + 3 + 2 + 3 + 3 + 4) + (2 + 3 + 3 + 4 + 3 + 4 + 4 + 5)
